#pragma once
#include "s:\documents\visual studio 2010\projects\masyu_svn\trunk\masyu3\processor.h"
#include "CellProcessor.h"
class QueueManager :
	public Processor
{
private:
	struct boost_cond 
	{
		boost::condition_variable condWhFinished;	//what about union or struct?
		boost::condition_variable condBlFinished;
		boost::condition_variable condGrFinished;
		boost::condition_variable condWhAdded;		//what about union or struct?
		boost::condition_variable condBlAdded;
		boost::condition_variable condGrAdded;
		boost::condition_variable AddedtoQmQ;
	} cond_var;
	struct ques
	{
		queue<Cell*> white;
		queue<Cell*> black;
		queue<Cell*> grey;
	} proc_ques;
	
protected:
	void ProcessingLogic();
public:
	QueueManager(void);
	virtual ~QueueManager(void);
	const boost_cond& getCondVars() { return cond_var; }
	const ques& getQ() { return proc_ques; }
	bool ifNeedsProcessing(const Cell*);
	
	
};

